package com.xjk.maptool;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class MapSplitter {

    public static List<Map<String, Object>> splitMap(Map<String, Object> originalMap, int n) {
        // 创建一个列表来保存结果
        List<Map<String, Object>> listOfMaps = new ArrayList<>();

        // 计算每个子Map应有的大小
        int size = originalMap.size();
        int eachMapSize = (size + n - 1) / n;  // 向上取整

        Iterator<Entry<String, Object>> iterator = originalMap.entrySet().iterator();

        for (int i = 0; i < n; i++) {
            // 为每个子Map创建HashMap
            Map<String, Object> partMap = new HashMap<>();

            // 填充每个子Map
            for (int j = 0; j < eachMapSize && iterator.hasNext(); j++) {
                Map.Entry<String, Object> entry = iterator.next();
                partMap.put(entry.getKey(), entry.getValue());
            }

            // 添加到结果列表中
            listOfMaps.add(partMap);

            // 如果原始Map的条目已经被完全处理，则结束循环
            if (!iterator.hasNext()) {
                break;
            }
        }

        return listOfMaps;
    }
}
